package com.hzz.api.user;


import com.github.pagehelper.PageInfo;
import com.hzz.dto.user.AuthRoleDto;
import com.hzz.dto.user.AuthUserVsRoleDto;
import com.hzz.dto.user.UserDto;
import com.hzz.framework.Response;

import java.util.List;
import java.util.Map;

/**
 * <p>组织架构_员工   业务处理接口类。
 */
public interface IUserService {

    /**
     * <p>信息编辑。
     */
    Response saveOrUpdateData(UserDto dto) throws Exception;

    /**
     * <p>信息新增。
     */
    Response insert(UserDto dto) throws Exception;

    /**
     * <p>信息编辑。
     */
    String updateData(UserDto dto) throws Exception;

    /**
     * <p>物理删除。
     */
    String deleteData(UserDto dto) throws Exception;

    /**
     * <p>恢复逻辑删除的数据 单条。
     */
    String recoveryDataById(UserDto dto) throws Exception;

    /**
     * <p>逻辑删除 单条。
     */
    String deleteDataById(UserDto dto) throws Exception;

    /**
     * <p>信息列表 分页。
     */
    PageInfo findDataIsPage(UserDto dto) throws Exception;

    /**
     * <p>信息列表。
     */
    List<UserDto> findDataIsList(UserDto dto);

    /**
     * <p>信息详情。
     */
    UserDto findDataById(UserDto dto);

    /**
     * <p>判断员工账号是否存在
     */
    String isAccountExist(String account);

    /**
     * <p>密码修改
     */
    String updatePassword(UserDto dto) throws Exception;

    /**
     * <p>密码重置
     */
    String resetPassword(UserDto dto) throws Exception;

    /**
     * <p>停用账号
     */
    String disabled(UserDto dto) throws Exception;

    /**
     * <p>信息列表。
     */
    List<UserDto> findRiverStaffIsList(UserDto dto);

//
//    /**
//     * <p>获取用户及用户所在组织。
//     */
//    List<UserDto> findUserAndOrgDataIsList(UserDto dto);
//
//    /**
//     * <p>获取员工所在组织集合。
//     */
//    List<OrgInfoDto> findOrgIsList(UserDto dto);

    /**
     * <p>获取员工->个人角色。
     */
    List<AuthRoleDto> findUserRoleIsList(UserDto dto);

    /**
     * <p>获取员工->组织角色。
     */
    List<AuthRoleDto> findOrgRoleIsList(UserDto dto);
//
//    /**
//     * <p>添加组织。
//     */
//    Response addOrg(AuthUserVsOrgDto dto) throws Exception;
//
//    /**
//     * <p>删除组织。
//     */
//    Response delOrg(AuthUserVsOrgDto dto) throws Exception;

    /**
     * <p>添加角色。
     */
    Response addRole(AuthUserVsRoleDto dto) throws Exception;

    /**
     * <p>删除角色。
     */
    Response delRole(AuthUserVsRoleDto dto) throws Exception;

    /**
     * <p>根据角色-获取员工分页。
     */
    PageInfo findUserByRoleIsPage(AuthUserVsRoleDto dto);

    /**
     * <p>根据角色-获取员工列表。
     */
    List<UserDto> findUserByRoleIsList(AuthUserVsRoleDto dto);

    /**
     * 根据用户查找河道-水库-渠道
     */
    Map findRiverDataByUserId(UserDto staffDto) throws Exception;
}
